/**************************************************************************************
*		              定时器0实验												  *
实现现象：下载程序后D1小灯循环点亮1秒，熄灭1秒。使用单片机内部定时器可以实现准确延时。
注意事项：无。																				  
***************************************************************************************/
#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;

sbit led=P2^0;	 //定义P20口是led

void Timer0Init() //定时器0初始化
{
	TMOD|=0X01; //选择为定时器0模式，工作方式1，仅用TR0打开启动。
	TH0=0XFC; //给定时器赋初值，定时1ms（1ms触发一次）
	TL0=0X18;	
	ET0=1; //打开定时器0中断允许
	EA=1; //打开总中断
	TR0=1; //打开定时器			
}

void main()
{	
	Timer0Init();  //定时器0初始化
	while(1);
}

void Timer0() interrupt 1 //定时器0中断函数
{
	static u16 i;
	TH0=0XFC;	//给定时器赋初值，定时1ms
	TL0=0X18;
	i++;
	if(i==1000) //攒到1000ms了取反
	{
		i=0;
		led=~led;	
	}	
}
